#include <iostream>
#include <sstream>
#include <vector>
#include <queue>
using namespace std;

// 定义树节点结构
struct treenode {
    treenode *left;
    treenode *right;
    treenode *fa;
    int data;
    treenode() : left(NULL), right(NULL), fa(NULL), data(0) {}
};

// 构建二叉树的函数，使用先序遍历方式构建
treenode* build(const vector<int>& a, int &index, treenode* parent = nullptr) {
    if(index >= a.size()) return NULL;
    if(a[index] == 0){
        index++;
        return NULL;
    }
    treenode* root = new treenode;
    root->data = a[index];
    root->fa = parent;
    index++;
    root->left = build(a, index, root);
    root->right = build(a, index, root);
    return root;
}

// 查找节点的父节点
int findParent(treenode* root, int m) {
    if(root == NULL) return 0; // 树为空
    if(root->data == m) return 0; // 根节点无父节点，返回0

    queue<treenode*> q;
    // 将根节点的左右子节点加入队列
    if(root->left){
        q.push(root->left);
        root->left->fa = root;
    }
    if(root->right){
        q.push(root->right);
        root->right->fa = root;
    }

    while(!q.empty()){
        treenode* head = q.front();
        q.pop();

        // 如果找到目标节点，返回其父节点的数据
        if(head->data == m){
            return head->fa ? head->fa->data : 0;
        }

        // 将当前节点的子节点加入队列
        if(head->left){
            q.push(head->left);
            head->left->fa = head;
        }
        if(head->right){
            q.push(head->right);
            head->right->fa = head;
        }
    }
    return 0; // 未找到，返回0
}

// 释放二叉树内存
void freeTree(treenode* root){
    if(root == NULL) return;
    freeTree(root->left);
    freeTree(root->right);
    delete root;
}

int main(){
    string s;
    // 读取整行输入
    getline(cin, s);
    stringstream ss(s);
    vector<int> a;
    int b;
    // 将输入的整数存入向量
    while(ss >> b){
        a.push_back(b);
    }

    int index = 0;
    // 构建二叉树，根节点的父指针为nullptr
    treenode* root = build(a, index, nullptr);

    int m;
    cin >> m; // 读取要查询的节点数量

    // 处理每一个查询
    for(int i = 0; i < m; i++){ // 修改循环条件
        int x;
        cin >> x;
        int parent = findParent(root, x);
        cout << parent << " "; // 输出父节点值，使用空格分隔
    }
    cout << endl;
    // 释放内存
    freeTree(root);
    return 0;
}
